home *** CD-ROM | disk | FTP | other *** search
- ;
- ; ***********************
- ; * PROTHD.COM / JCE 1992 *
- ; ***********************
- ; v.B19
- ; --------------------------------
- ; Aborta cualquier llamada al BIOS
- ; para formatear, borrar o grabar
- ; en el disco duro.
- ; --------------------------------
-
- CODE SEGMENT
- ASSUME CS:CODE, DS:CODE
-
- psp17 EQU CS:80H
- entrada EQU CS:82H
-
- ORG 100h
-
- EXTRN PR9BIOS:NEAR
-
- PROTHD:
- JMP PROTHD_RUN
-
- dato DB 0
-
- ;
- ; Arranque: QUEDA RESIDENTE
- ; -------------------------
-
- PROTHD_RUN:
-
- MOV AL,BYTE PTR [psp17]
- CMP AL,2
- JNE error
-
- MOV AL,BYTE PTR [entrada]
- MOV [dato],AL
-
- MOV DX,OFFSET MSG0
- CALL PR9BIOS
-
- XOR AX,AX
- MOV ES,AX
-
- MOV AL,BYTE PTR [dato]
- SUB AL,48
- CMP AL,1
- JZ RESID
-
- CMP AL,0
- JNZ error
-
- MOV DX,OFFSET MSG00
- CALL PR9BIOS
- CLI
- MOV WORD PTR ES:[4CH],2EB0H
- MOV WORD PTR ES:[4EH],0070H
- STI
- JMP RETDOS
-
- error:
- MOV DX,OFFSET MSG3
- CALL PR9BIOS
- JMP RETDOS
-
- RESID:
- MOV AX,WORD PTR ES:[4cH]
- CMP AX,OFFSET PROG
- JZ RETDOS0 ; Comprueba si residente
-
- ;
- ; Parcheo INT 13H (rutinas BIOS para contr. disco)
- ; ------------------------------------------------
- CLI
- MOV AX,WORD PTR ES:[4cH]
- MOV WORD PTR CS:[OLD13H],AX
- MOV AX,WORD PTR ES:[4eH]
- MOV WORD PTR DS:[OLD13H+2],AX
- MOV WORD PTR ES:[4cH],OFFSET PROG
- MOV WORD PTR ES:[4eH],CS
- STI
-
- MOV DX,OFFSET MSG01
- CALL PR9BIOS
-
- MOV AX,3100H
- MOV DX,100 ; bytes/16 reservados
- INT 21H ; Residente
-
- RETDOS:
- INT 20H ; Vuelve al DOS
-
- retdos0:
- MOV DX,OFFSET MSG1
- CALL PR9BIOS
- JMP RETDOS
-
- ; -------------------------------------
- ; No permite escribir ni modificar HD
- ; -------------------------------------
-
- PROG:
- JMP PROG2
-
-
- OLD13H DD 0
-
-
- PROG2:
- PUSHF
- PUSH AX
- PUSH DX
-
- PUSH AX
-
- MOV AH,25
- INT 21H ; averigua drive activo
-
- CMP AL,0
- JZ retorna0
- CMP AL,1
- JZ retorna0
-
- POP AX
-
- CMP AH,3
- JZ OK ; escritura
-
- CMP AH,5
- JZ OK ; formateo
-
- CMP AH,10
- JZ OK ; escritura
-
- CMP AH,11
- JZ OK ; escritura
- JMP retorna
-
- ok:
- MOV DX,offset MSG2
- CALL PR9BIOS
-
- POP DX
- POP AX
- POPF
- MOV AX,4CH ; vuelve
- INT 21H
-
- retorna0:
- POP AX ; desprecia dato pila
- retorna:
- POP DX
- POP AX
- POPF
- JMP CS:[OLD13H] ; ejecuta BIOS
-
- ;
- ; Textos
- ; ------
-
- MSG0 DB 10,13,"* PROTHD.COM (v.B13)/ JCE May 1992 *",10,13,"$"
- MSG01 DB "Ok. PROTHD activado!",10,13,"$"
- MSG00 DB "Ok. PROTHD desactivado!",10,13,"$"
- MSG1 DB "PROTHD ya era residente!",10,13,"$"
-
- MSG2 DB 7,"* PROTHD: Se ha intentado modificar o formatear el HD! *",10,13,"$"
-
- MSG3 DB "Formato: PROTHD 1 ..... ACTIVAR PROTECCION",10,13
- DB " PROTHD 0 ..... DESACTIVAR PROTECCION",10,13,"$"
-
- CODE ENDS
- END PROTHD